package com.adee.java;

public class Test009_Overwrite {
    public static void main(String[] args) {

    }

    class Father {
        Animal get(String s) throws ServiceException{
            return new Animal();
        }
    }

    class Son extends Father {
        /*
         * 方法重写：
         * 1. 发生在父子类中，方法名、参数列表必须相同；
         * 2. 返回值类型和父类方法相同或者是其子类；
         * 3. 声明抛出的异常和父类方法相同或者是其子类；
         * 4. 访问修饰符范围大于等于父类方法，如果父类方法为private，则子类不能重写此方法。
         * */
        @Override
        protected Dog get(String s) throws UserServiceException{
            return new Dog();
        }
    }

    class Animal {

    }
    class Dog extends Animal {

    }

    class ServiceException extends Exception {

    }

    class UserServiceException extends ServiceException {

    }
}


